本文共 2658 字,大约阅读时间需要 8 分钟。
MySQL支持常见的算术运算符,包括加、减、乘、除、模运算。需要注意的是,除法默认会返回浮点数结果,若需要整数结果,可以使用DIV
函数。
SELECT eid FROM t_employee WHERE eid % 2 = 0;
SELECT eid, basic_salary / 12 AS "日薪" FROM t_salary;
performance_salary
表存在):SELECT eid, basic_salary + performance_salary * (1 + commission_pct) FROM t_salary;
比较运算符用于筛选数据,常用的包括等于、不等于、大于、小于等于等操作。注意 NULL
值的处理,建议使用 IS NULL
或 IS NOT NULL
来判断,而不是直接比较 NULL
与其他值。
basic_salary
不等于 10000 的员工信息:SELECT eid, basic_salary FROM t_salary WHERE basic_salary != 10000;
commission_pct
等于 0.40 的员工信息:SELECT eid, commission_pct FROM t_salary WHERE commission_pct = 0.40;
commission_pct
等于 NULL
的员工信息:SELECT eid, commission_pct FROM t_salary WHERE commission_pct IS NULL;
逻辑运算符用于组合多个条件,常用来筛选复杂的数据。AND
用于同时满足多个条件,OR
用于满足任意一个条件。NOT
用于否定条件。
SELECT * FROM t_employee WHERE gender = '男' AND birthday < '1990-01-01';
SELECT eid, basic_salary FROM t_salary WHERE job_id = 1 OR job_id = 2;
BETWEEN
用于在两个值之间筛选数据,NOT BETWEEN
用于排除该范围。IN
和 NOT IN
则用于筛选集合中的元素。
SELECT eid, basic_salary FROM t_salary WHERE basic_salary BETWEEN 9000 AND 12000;
SELECT eid, basic_salary FROM t_salary WHERE eid IN (1, 3, 5);
LIKE
和通配符 %
、 _
用于进行模糊查询,匹配部分字符。NOT LIKE
则用于排除不符合的结果。
SELECT * FROM t_employee WHERE ename LIKE '%冰%';
SELECT * FROM t_employee WHERE ename LIKE '李_';
位运算符用于对二进制数据进行操作,常见的包括按位与、或、异或、取反等操作。
SELECT 2 & 3, 2 | 3, 2 ^ 3, ~3;
关联查询用于从多个表中获取相关数据,常见的有内连接、外连接和自连接等。
笛卡尔积是将两张或多张表的所有行组合在一起,通常会因为缺少关联条件而导致大量冗余数据。
SELECT ename, dname FROM t_employee, t_department;
关联条件可以通过 WHERE
、ON
、USING
等方式指定。WHERE
可用于所有关联类型,而 ON
和 USING
只能与 JOIN
结合使用。
WHERE
后面:SELECT ename, dname FROM t_employee, t_department WHERE t_employee.dept_id = t_department.did;
ON
后面(显式内连接):SELECT ename, dname FROM t_employee INNER JOIN t_department ON t_employee.dept_id = t_department.did;
内连接用于保留仅有匹配的行,通常用于两个表之间的关联。
SELECT ename, dname FROM t_employee INNER JOIN t_department ON t_employee.dept_id = t_department.did;
外连接用于保留没有匹配的行,通常用于左连接或右连接。
SELECT emp.ename, mgr.ename FROM t_employee AS empLEFT JOIN t_employee AS mgr ON emp.mid = mgr.eid;
自连接用于将同一张表视为两个不同的表进行操作。
SELECT emp.ename, mgr.ename FROM t_employee AS empLEFT JOIN t_employee AS mgr ON emp.mid = mgr.eid;
希望这些内容能帮助你更好地理解和使用MySQL运算符及关联查询!
转载地址:http://nedfk.baihongyu.com/